package com.timberwood.model.dao;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;


import com.timberwood.model.entity.Category;
import com.timberwood.util.HibernateUtil;

public class CategoryDAO {
	private Session session;
	private Transaction transaction;
	
	public CategoryDAO() {
		session = HibernateUtil.getSessionFactory().getCurrentSession();
		transaction= session.beginTransaction();
	}
	
		
	//method lấy về tất cả các loại sản phẩm đang được bán
	@SuppressWarnings("unchecked")
	public List<Category> sleCategoryBusy() {
		List<Category> listCate=null;
		try {
			listCate=(List<Category>)session.getNamedQuery("sleCategoryBusy").list();
		} catch (HibernateException he) {
			transaction.rollback();
			he.printStackTrace();
		}
		transaction.commit();
		return listCate;
	}
	
	//method lấy về tất cả các loại sản phẩm ngừng bán
	@SuppressWarnings("unchecked")
	public List<Category> sleCateStopSelling() {
		List<Category> listCate=null;
		try {
			listCate=(List<Category>)session.getNamedQuery("sleCateStopSelling").list();
		} catch (HibernateException he) {
			transaction.rollback();
			he.printStackTrace();
		}
		transaction.commit();
		return listCate;
	}
	
	
	
	
	
	
	
	//method lấy về loại sản phẩm theo mã loại
	public Category sleCateById(int cateId) {
		Category objCate=null;
		try {
			objCate=(Category)session.getNamedQuery("sleCateById").setInteger("cateId",cateId).uniqueResult();
		} catch (HibernateException he) {
			transaction.rollback();
			he.printStackTrace();
		}
		transaction.commit();
		return objCate;
	}
	
	
	
	
	//method cập nhật loại sản phẩm
	public boolean updateCate(Category objCategory){
		boolean status;
		try {
			session.update(objCategory);
			status=true;
		} catch (HibernateException he) {
			status=false;
			transaction.rollback();
			he.printStackTrace();
		}
		transaction.commit();
		return status;
	}
	
	//method xóa một loại sản phẩm
	public boolean deleteCate(int cateId) {
		boolean status;
		try {
			session.getNamedQuery("deleteCategory").setInteger("cateId", cateId).executeUpdate();
			status=true;
		} catch (HibernateException he) {
			status=false;
			transaction.rollback();
			he.printStackTrace();
		}
		transaction.commit();
		return status;
	}
	
	
	//method thêm mới một loại sản phẩm
	public boolean insertCategory(Category objcate) {
		boolean status;
		try {
			session.save(objcate);
			transaction.commit();
			status=true;
		} catch (HibernateException he) {
			status=false;
			transaction.rollback();
			he.printStackTrace();
		}
		return status;
	}
	
	
	
	

		
}
